package cn.hyman;

import org.apache.activemq.ActiveMQConnectionFactory;

import javax.jms.*;

public class JmsProduce_topic {
    public static final String TOPIC_NAME = "my-topic";

    public static void main(String[] args) throws JMSException {
        ConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://192.168.2.165:61616");
        // 第二步：使用ConnectionFactory对象创建一个Connection对象。
        Connection connection = connectionFactory.createConnection();
        // 第三步：开启连接，调用Connection对象的start方法。
        connection.start();
        // 第四步：使用Connection对象创建一个Session对象。
        //第一个参数：是否开启事务。true：开启事务，第二个参数忽略。
        //第二个参数：当第一个参数为false时，才有意义。消息的应答模式。1、自动应答2、手动应答。一般是自动应答。
        Session session = connection.createSession(Boolean.TRUE, Session.AUTO_ACKNOWLEDGE);
        // 第五步：使用Session对象创建一个Destination对象（topic、queue），此处创建一个Queue对象。
        // 参数：队列的名称。
        Destination queue = session.createTopic(TOPIC_NAME);
        // 第六步：使用Session对象创建一个Producer对象。
        MessageProducer producer = session.createProducer(queue);
        // 第七步：创建一个Message对象，创建一个TextMessage对象。
        for (int i = 0; i < 3; i++) {
            /*
             * TextMessage message = new ActiveMQTextMessage();
             * message.setText("hello activeMq,this is my first test.");
             * 下面一句等同上面两句
             */
            TextMessage textMessage = session.createTextMessage("message--" + i);
            // 第八步：使用Producer对象发送消息。
            producer.send(textMessage);
            session.commit();
        }
        // 第九步：关闭资源。   connection.createSession(Boolean.TRUE, Session.AUTO_ACKNOWLEDGE); 需要提交
        session.commit();
        //connection.createSession(Boolean.FALSE, Session.AUTO_ACKNOWLEDGE); 不需要提交，把下面代码打开就行了
        //producer.close();
        session.close();
        connection.close();
    }
}
